package com.ruoyi.contractHomepage.controller;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.contractHomepage.domain.DocContractHome;
import com.ruoyi.contractHomepage.service.IDocContractHomeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.utils.SecurityUtils;

import java.util.List;

/**
 * 签约首页Controller
 *
 * @author me
 * @date 2025-08-15
 */
@RestController
@Api(tags = "签约首页")
@RequestMapping("/contractHomepage/docContractHome")
public class DocContractHomeController extends BaseController {

    @Autowired
    private IDocContractHomeService docContractHomeService;

    /**
     * 根据团队ID查询团队及成员信息
     *
     * @param teamId 团队ID
     * @return AjaxResult 包含团队及成员信息的Ajax结果
     */
    @ApiOperation("根据团队ID查询团队及成员")
    @PostMapping("/findById/{id}")
    public AjaxResult findById(@PathVariable("id") Long teamId) {
        // 查询团队及其关联的医生成员信息
        DocContractHome docContractHome = docContractHomeService.selectTeamWithDoctor(teamId);
        return AjaxResult.success(docContractHome);
    }

    /**
     * 查询所有团队及成员信息
     * 该方法通过调用服务层获取所有团队及其对应的成员信息列表
     *
     * @return AjaxResult 包含查询结果的统一返回对象，数据部分为DocContractHome列表
     */
//    @ApiOperation("查询所有团队及成员")
//    @GetMapping("/findAll")
//    public AjaxResult findAll() {
//        // 调用服务层方法查询所有团队及成员信息
//        List<DocContractHome> list = docContractHomeService.selectAllTeamsWithDoctor();
//        // 构造成功响应结果并返回
//        return AjaxResult.success(list);
//    }

    /**
     * 查询所有团队及成员信息，使用若依框架标准分页格式返回数据
     *
     * @return TableDataInfo 包含分页数据的对象，包含total(总记录数)和rows(当前页数据列表)两个字段
     */
    @ApiOperation("查询所有团队及成员")
    @GetMapping("/findAll")
    public TableDataInfo findAll() {
        // 开启分页，自动读取前端的 pageNum/pageSize
        startPage();
        List<DocContractHome> list = docContractHomeService.selectAllTeamsWithDoctor2();
        // 将查询结果封装为包含total和rows的TableDataInfo对象
        return getDataTable(list); // 注意：这里要用 TableDataInfo 才包含 total 和 rows
    }

    /**
     * 根据团队名称模糊查询团队及成员信息
     *
     * @param teamName 团队名称，用于模糊查询
     * @return TableDataInfo 包含团队及成员信息的分页数据结果
     */
    @ApiOperation("根据团队名称模糊查询团队及成员")
    @GetMapping("/searchByName")
    public TableDataInfo searchByName(@RequestParam("teamName") String teamName) {
        // 开启分页
        startPage();
        List<DocContractHome> list = docContractHomeService.searchTeamsWithDoctorsByName(teamName);
        return getDataTable(list);
    }

    /**
     * 获取当前登录用户的昵称
     * 通过SecurityUtils工具类获取当前登录用户信息，然后返回用户的昵称
     *
     * @return String 当前登录用户的昵称字符串
     */
    @ApiOperation("获取当前登录用户昵称")
    @GetMapping("/getUserNickName")
    public String getUserNickName() {
        // 从安全上下文中获取登录用户信息并返回昵称
        return SecurityUtils.getLoginUser().getUser().getNickName();
    }


}
